 $ type sys$help:BASIC032.RELEASE_NOTES;1



RELEASE NOTES FOR VAX BASIC V3.2

These notes contain sections covering the following topics:

      o  Problems fixed in this release

      o  Restrictions on the use of features

      o  Incompatibilities with version 2.n of VAX BASIC

      o  Known current problems for VAX BASIC and the  associated  RTL
         support

      o  Graphics incompatibilities introduced by VAX GKS Version 3.0

      o  Additional installation considerations

      o  Documentation errors and omissions

      o  How to report software problems



VAX BASIC Version 3.2 is a maintenance release.   Many  problems  that
were  present  in  previous  versions of the product are fixed in this
release.

VAX BASIC Version 3.2 requires VAX/VMS Version 4.5 or higher.

PROBLEMS FIXED IN THIS VERSION

The following problems in previous versions of  VAX  BASIC  have  been
corrected in VAX BASIC Version 3.2:


      o  The DEF and DEF* functions that followed a DEF function  that
         contained  a  MAT  or  DRAW  statement would not be allocated
         properly in the  generated  code.   As  a  result,  any  data
         following the corrupted DEF or DEF* function in the generated
         code would also be corrupted.  This problem has been fixed.

      o  In some cases, if the value of an element of a virtual array,
         whose  index  was  an  expression  containing an element of a
         virtual array, was assigned to an element of a virtual array,
         whose  index  was  also  an  expression,  the  value could be
         incorrect.  For example:  Assume X,  Y,  and  Z  are  virtual
         arrays, a, b, c and d are variables,

                Z(a+b) = X(Y(c)+d)

         This problem has been fixed.

      o  If the x and y values for the coordinate pair  in  the  GRAPH
         LINES  or  PLOT  LINES  statement are elements of a parameter
         array, VAX BASIC erroneously reversed the  x  and  y  values.







                                                                Page 2


         This problem has been fixed.

      o  If an array with a numeric data  type  other  than  LONG  was
         dimensioned  at  run  time,  and an element of that array was
         used as a subscript (other  than  the  first  subscript)  for
         another  array,  the  compiler  signaled  an  internal coding
         error.  Similarly, if the numeric array was  not  dimensioned
         at  run  time, but it was passed as a parameter by descriptor
         to another routine, and an element of that array was used  as
         a  subscript  (other  than  the  first subscript) for another
         array, the compiler signaled an internal coding error.   Both
         of these problems have been fixed.

      o  If the value returned from  the  ABS  built-in  function  was
         assigned  to a variable of data type DECIMAL, the value could
         be incorrect.  Similarly, if the argument to the MAG built-in
         function  was of a REAL data type, and the value returned was
         assigned to a variable of data type DECIMAL, the value  could
         be incorrect.  These problems have been fixed.

      o  If the first argument to the MOD built-in function  is  of  a
         data  type  other  than DECIMAL and the second argument is of
         DECIMAL data type , the compiler signaled a  severe  internal
         coding error.  This problem has been fixed.

      o  If the target string variable  for  the  LSET,  RSET  or  MID
         built-in  function  was either a virtual array or a parameter
         array passed by descriptor whose index was  either  an  array
         element  or  RECORD component, VAX BASIC signaled an internal
         coding error.  This problem has been fixed.

      o  If  the  protected  region  of  a  WHEN  block  contained  an
         IF/THEN/ELSE  statement,  and  the last statement of the THEN
         clause  generated  an  error,   the   execution   erroneously
         continued  at  the  first statement in the ELSE clause if the
         error condition was cleared by a CONTINUE statement without a
         target.   Now,  the  program correctly continues at the first
         statement after the IF/THEN/ELSE statement.

      o  VAX BASIC previously failed to report the correct  ERL  value
         when  a BASIC line number was within a WHEN block style error
         handler.  VAX BASIC V3.2 no longer fails in this situation.

      o  When a run-time error occurred in a DEF  function  which  was
         within  a program that was bigger than 65534 bytes, VAX BASIC
         reported an incorrect  ERL  value.   This  problem  has  been
         fixed.

      o  Suppose there existed  an  array  passed  to  a  routine  via
         descriptor.  If an element of this array, whose subscript was
         a RECORD component, was passed to the LOC  built-in  function
         and the value returned by the LOC function was assigned to an
         element of this array, again whose  subscript  was  a  RECORD
         component, VAX BASIC signaled an internal coding error.  This
         problem has been fixed.








                                                                Page 3


      o  If an array of a user defined data type was declared in a MAP
         statement,  the allocation section of the compilation listing
         previously reported the size of the array as  the  square  of
         the actual array size.  This problem has been fixed.

      o  If an  illegal  string  expression  was  specified  with  the
         FORMAT$  function,  the  compiler  signaled the error "Access
         violation".  VAX BASIC now reports the  error  "illegal  mode
         mixing".

      o  VAX BASIC now allows the user to  trap  the  run  time  error
         "REMAP  string  is not static" (ERR=196) in a subprogram that
         includes the OPTION HANDLE = SEVERE statement.

      o  If an array with a user defined data type  was  redimensioned
         at run time more than once, VAX BASIC incorrectly reported an
         "illegal multiple definition" error for the dimension.   This
         problem has been fixed.

      o  If a RECORD component was not an array  and  was  used  as  a
         parameter  in  the  LBOUND  or  UBOUND built-in function, VAX
         BASIC signaled "Access Violation".   This  problem  has  been
         fixed.

      o  In some obscure case, VAX BASIC did not allocate the  DECIMAL
         array  descriptor  and  STRING array descriptor correctly and
         signaled the error "Access violation".  This problem has been
         fixed.

      o  VAX BASIC no longer reports an internal coding error when  an
         entire array is passed as an argument to a subroutine and the
         array is continued in mid-argument on multiple lines.

      o  VAX BASIC previously generated an invalid analysis_data  file
         if  a program containing an EXTERNAL statement used data type
         ANY.  This problem has been fixed.

      o  When you use the %INCLUDE %FROM %LIBRARY directive and do not
         specify   a   library,   VAX   BASIC   translates   the  name
         BASIC$LIBRARY for a library specification.  If  there  is  no
         logical name translation for BASIC$LIBRARY, the compiler uses
         SYS$LIBRARY:BASIC$STARTLET.TLB as the default text library.

      o  The statement OPTION OLD VERSION = NOCDD is now supported  by
         VAX  BASIC  to  enable  processing  of CDD records containing
         arrays with non-zero lower bounds.

      o  VAX BASIC provides a new logical name BASIC$ADJWSL to control
         whether  or  not  a  working set adjustment will be performed
         during the processing  of  commands  from  within  the  BASIC
         environment.   See  the VAX BASIC Installation Guide for more
         information.

      o  VAX BASIC has removed  the  informational  message  "language
         feature  incompatible  with  BASIC-PLUS-2"  for the following








                                                                Page 4


         features that BASIC-PLUS-2 Version 2.4 has added :   PROGRAM,
         EXIT/END PROGRAM, END/EXIT values except on END/EXIT PROGRAM,
         literal radix specifier, %PRINT, REMAP of  a  static  string,
         allowing  %  and $ suffixes on explicitly declared variables,
         OPTION CONSTANT TYPE, SET [NO] PROMPT, MIN, MOD, MAX, and  up
         to 32 parameters on a FUNCTION, DEF,or SUB.

      o  If a program containing a  MAP  DYNAMIC  or  REMAP  statement
         identifying  a storage area with a static string variable was
         compiled  with  the  /CROSS_REFERENCE  qualifier,  VAX  BASIC
         signaled  the error "Access violation".  The /CROSS_REFERENCE
         qualifier no longer generates an error in this situation.

      o  If a program containing either a  MAT  statement  to  perform
         arithmetic   operations  or  a  DRAW  statement  with  matrix
         transformations  was  compiled  with   the   /CROSS_REFERENCE
         qualifier,  VAX  BASIC signaled the error "Access Violation".
         The /CROSS_REFERENCE qualifier no longer generates  an  error
         in this situation.

      o  If the /LIST qualifier was used to compile a program  with  a
         DIMENSION  statement  that  contained  more  than  100  array
         indices, the compiler signaled "Access violation".  Now,  VAX
         BASIC only reports the error "Too many array indices active".

      o  The /SHOW=OVERRIDE qualifier now works properly  to  override
         the  %NOLIST  directive  and  display  all source code in the
         listing.

      o  The SHOW command in the BASIC environment  now  displays  the
         DIAGNOSTICS   and   ANALYSIS_DATA   qualifiers  if  they  are
         specified in the command line.

      o  If a program includes a file with the %INCLUDE directive  and
         the  program  has  syntax  errors  immediately  preceding and
         following  the  %INCLUDE  directive,  VAX  BASIC  no   longer
         generates  an  invalid  diagnostics file when this program is
         compiled with the /DIAGNOSTICS qualifier.

      o  Compiling a program that included another  source  file  that
         contained  more  lines  than the file containing the %INCLUDE
         directive resulted in an invalid LSE diagnostics file.   This
         problem has been fixed.

      o  VAX BASIC now  consistently  reports  errors  "CDD  specifies
         SCALE  for  <RECORD-component>.   Not  supported." and "DIGIT
         attribute of <field-name> not supported for data  type"  when
         scale  and  digit  attributes are illegally specified for all
         data types.  Previously, these errors were not  reported  for
         QUADWORD,  OCTAWORD  or  numeric string data types other than
         DECIMAL.

      o  If a numeric argument was passed to a built-in function  that
         required  a  string argument, the compiler reported the error
         "Numeric expression is required".  VAX BASIC now reports  the








                                                                Page 5


         error "String expression is required".

      o  In a program without line numbers, VAX BASIC now  reports  an
         error if line number 1 is referenced as a GOTO, GOSUB, RESUME
         or CONTINUE target.

      o  VAX  BASIC  incorrectly  reported  the  error  "Illegal   MID
         assignment  length"  when  a  substring was inserted into the
         last position of string.  This problem has been fixed.

      o  VAX BASIC no longer reports the error "Attributes of overlaid
         variable <name> don't match" when the overlaid variable is of
         a user defined data type in the MAP statement.

RESTRICTIONS

The following restrictions exist for VAX BASIC V3.2:

      o  You cannot concatenate programs at DCL level with a plus sign
         (+)  if  one  or  more  of the programs contain no BASIC line
         numbers.  For example, the following command will generate an
         error if either A.BAS or B.BAS contains no line numbers:

         $ BASIC A + B 


      o  VAX BASIC allows a maximum of 65535 dynamic string variables,
         dynamic  string  array  elements, and string temporaries in a
         single compilation unit.  An attempt to  allocate  more  than
         65535 dynamic strings may result in a Stack Overflow error at
         run-time.

INCOMPATIBILITIES WITH VERSION 2.n OF VAX BASIC

Consult the release notes for VAX BASIC V3.0 for information regarding
incompatibilities  between  VAX  BASIC 3.n and VAX BASIC 2.n.  The VAX
BASIC   Version    3.0    release    notes    can    be    found    in
SYS$HELP:BASIC030.RELEASE_NOTE   if  VAX  BASIC  V3.0  was  previously
installed on your system.

KNOWN PROBLEMS

      o  COMPILER PROBLEMS

         This section summarizes problems in the  VAX  BASIC  compiler
         that have not been fixed for this release.

          -  VAX BASIC signals the  error  "Access  violation"  if  an
             element  of  a  virtual  array  of  a record data type is
             passed to a routine as  a  parameter  by  descriptor.   A
             temporary workaround is to assign this array element to a
             variable and then pass this variable as  a  parameter  to
             the routine.










                                                                Page 6


          -  In some cases, if a syntax error occurs in the expression
             in  a WHILE or UNTIL clause of a FOR statement, VAX BASIC
             reports an internal coding error.   A  workaround  is  to
             correct the syntax error in the expression.


          -  If the second argument to the FORMAT$  built-in  function
             is  an  element  of a parameter array or a virtual array,
             the compiler reports the  error  "Access  violation".   A
             workaround  is  to assign the array element to a variable
             and then use this variable as an argument to the  FORMAT$
             built-in function.


          -  If the argument  to  the  INT  built-in  function  is  an
             expression,  and one of the operands of the expression is
             an element of either a parameter array or a virtual array
             of   a  real  data  type,  and  another  operand  of  the
             expression is of a data type that must  be  converted  to
             the  data  type  of the array element, the value returned
             from the INT function may not be correct.  For example:

                    SUB Int_sub (DOUBLE Para_arr ())
                        DECLARE LONG Y 
                        Y = 20
                        PRINT INT (Para_arr (1) * Y)
                    END SUB       

             A workaround is to assign the value of the expression  to
             a  variable  and then use this variable as an argument to
             the INT function.


          -  If the value returned  from  an  exponential  expression,
             whose  base  is  an array element of data type HFLOAT and
             whose  exponent  is   an   expression   enclosed   within
             parenthesis,  is  assigned  to  an  element of a run-time
             dimensioned  array,  VAX  BASIC  may  either  signal  the
             run-time  error "Access violation" or return an incorrect
             result at run time.  For example:

                DIM HFLOAT x(4), LONG y(var_a)
                y (k) = x (i)^(j)

             A workaround is to assign the exponent to a variable  and
             then use this variable as the exponent.


          -  If a record contains a dimensioned  group  that  in  turn
             contains  an element that is an array, attempting to pass
             the entire record element array as a parameter results in
             an internal coding error being reported.  For example:










                                                                Page 7


               RECORD Rec_type
                 GROUP Grp(10)
                   LONG Element(5)
                 END GROUP
               END RECORD
               DECLARE Rec_type Rec
               CALL SUBPROG (Rec::Grp(0)::Element() )


          -  Cross-reference  listings  incorrectly   list   MOVE   TO
             statements  as  destructive  references  of the variables
             whose values are being moved into the I/O  buffer.   MOVE
             TO statements are not destructive references.

          -  FOR loop indices are not marked as destructive references
             in the cross-reference listing.

          -  Setting a breakpoint at one of the continuation lines  of
             an  ON GOSUB or ON GOTO statement in the VAX/VMS DEBUGGER
             may cause corrupted instructions.  No error is signaled.


      o  GRAPHICS PROBLEMS

         The following problems will be corrected in a future  release
         of VAX GKS:

          -  On VT241 terminals, the size of the text  characters  for
             CHOICE  input  can  sometimes  be too small and yet later
             change  to  larger  characters.   When  the  text  height
             increases,  the  highlighting  of  the  current choice is
             incorrect.


          -  If the left or bottom boundary in the VAX BASIC  graphics
             statement  SET  DEVICE  VIEWPORT  is  a  non-zero  value,
             subsequent input or output graphics  statements  may  not
             behave  as  expected  on  a VAXstation.  For example, the
             graphics window may not be  displayed  on  the  specified
             portion   of  the  device,  or  the  VAX  BASIC  graphics
             statement  LOCATE  POINT  may  not  return  the   correct
             results.

         The following problems exist in  the  Run-Time  Library  code
         that  supports VAX BASIC graphics statements.  These problems
         will  be  corrected  in  a  future  release  of  the  VAX/VMS
         operating system:


          -  A PLOT LINES statement can leave the "beam of  light"  on
             if   you  add  a  semicolon  (;)  after  the  last  point
             specified.  This causes a line  to  be  drawn  from  this
             point  to  the  next point specified in a subsequent PLOT
             LINES statement.  VAX BASIC should turn the beam of light
             off  upon  entering  and  leaving  a  PICTURE subprogram;








                                                                Page 8


             however, the beam of light is erroneously left on.   This
             behavior may change in a future release of VAX/VMS.

             To ensure the correct behavior,  programs  that  use  the
             PLOT  LINES  statement  followed  by  a  semicolon should
             explicitly turn the beam of light off upon  entering  and
             exiting  each  PICTURE  subprogram.  You can turn off the
             beam of light by executing any graphics input  or  output
             statement other than a PLOT LINES statement followed by a
             semicolon.



      o  RUN-TIME LIBRARY PROBLEMS

         The following problems exist in  the  Run-Time  Library  code
         that  supports  VAX  BASIC  routines.  These problems will be
         fixed in a future release of the VAX/VMS operating system.


          -  If a program contains a MOVE TO statement and the data to
             be  moved  is in a DECIMAL array, some of the data in the
             array may not be moved.

          -  When a PICTURE, external FUNCTION, or SUB  subprogram  is
             called  with  too  few arguments and the called procedure
             uses an array,  VAX  BASIC  signals  the  error  "Integer
             error"  (ERR=51).  The generated error should be "Too few
             arguments" (ERR=97).

          -  In some  cases,  the  use  of  the  zero-fill  formatting
             character  (<0>)  and the comma formatting character in a
             PRINT  USING  or  FORMAT$  format   string   results   in
             unexpected additional zeros.  For example:

                  10     PRINT USING "<0>####,###", 123456
                  20     PRINT USING "<0>###,###", 123456
                  RUNNH

                   00,123,456
                   0,123,456


          -  The VAX BASIC environment may  abort  when  a  CTRL/C  is
             typed  under the following conditions:  You type a CTRL/C
             while a program is executing, and VAX BASIC displays  the
             READY  prompt.   You  type  CONTINUE at the READY prompt.
             VAX BASIC continues your program,  which  then  enters  a
             WHEN  block.   A statement within the protected region of
             the  WHEN  block  takes  an  exception,  and  control  is
             transferred to the corresponding error handler.  However,
             if the error handler attempts to clear the exception, VAX
             BASIC  erroneously  resignals  the  error  and terminates
             abnormally, returning to DCL level.  For example,









                                                                Page 9


                     PROGRAM CONTROL_C_PROBLEM

                     ! Type CONTROL/C while executing this statement
                     X = COS(.3) FOR Y = 1 TO 100000

                     WHEN ERROR IN
                        ! GET statement cause an error
                        GET #1
                     USE
                        PRINT "Handled:";ERR;ERT$(ERR)
                        CONTINUE DONE
                     END WHEN
                   DONE:
                     END PROGRAM



          -  If the response to the INKEY$  built-in  function  is  an
             escape  character  (ASCII code 27), the program execution
             hangs  indefinitely.   When  another  keyboard   key   is
             pressed, VAX BASIC reports the error "Data overflow".



GRAPHICS INCOMPATIBILITIES INTRODUCED BY VAX GKS V3.0

If you install VAX GKS V3.0 or later, the following  incompatibilities
with VAX GKS V2.0 may affect VAX BASIC graphics programs.  Consult the
VAX GKS release notes for more information on changes made in VAX  GKS
Version 3.0.


      o  The VAX BASIC graphics  statement  ASK  DEVICE  VIEWPORT  now
         returns  the boundary values that were previously set, rather
         than boundary values that have been adjusted if necessary  to
         maintain the correct aspect ratio.

         Using VAX GKS Version 2.0, the VAX BASIC ASK DEVICE  VIEWPORT
         statement  returns the "realized" device viewport boundaries.
         "Realized" device viewport boundaries are boundaries that are
         adjusted  by  VAX  GKS when the current boundary settings for
         the device viewport  are  not  proportional  to  the  current
         boundary  settings  for  the  device window.  The adjusted or
         "realized"  boundaries  use  the  largest   possible   device
         viewport that matches the shape of the device window.

         Using VAX GKS Version 3.0 and later, however, the ASK  DEVICE
         VIEWPORT  statement  returns  the  device viewport boundaries
         specified in the most recent SET DEVICE VIEWPORT statement or
         the   default  viewport  boundary  values,  rather  than  the
         "realized" device viewport boundaries.  This change  complies
         with both the ANSI BASIC standard and the ANSI GKS standard.

         A VAX BASIC SUB subprogram has been provided with  VAX  BASIC
         V3.1  and later to duplicate the previous behavior of the ASK








                                                               Page 10


         DEVICE     VIEWPORT     statement.      This      subprogram,
         ASK_REALIZED_DEVICE_VIEWPORT,  resides  in  the  text library
         BASIC$GRAPHICS.TLB and the object library  BASIC$GRAPHICS.OLB
         in  the  BASIC subdirectory under SYS$EXAMPLES.  To duplicate
         the behavior prior to VAX GKS V3.0, replace each  ASK  DEVICE
         VIEWPORT  statement  in  your  program  with  a  call  to the
         subprogram ASK_REALIZED_DEVICE_VIEWPORT.  The  parameters  to
         this  SUB subprogram are the same as the arguments to the ASK
         DEVICE  VIEWPORT  statement.   If  the  ASK  DEVICE  VIEWPORT
         statement does not specify a device-id, specify a zero as the
         first parameter to the ASK_REALIZED_DEVICE_VIEWPORT  routine.
         For example:


             %INCLUDE "ASK_REALIZED_DEVICE_VIEWPORT" %FROM %LIBRARY &
               "SYS$SYSROOT:[SYSHLP.EXAMPLES.BASIC]BASIC$GRAPHICS.TLB"

             PROGRAM My_graphics_application

             EXTERNAL SUB                                         &
               ASK_REALIZED_DEVICE_VIEWPORT (LONG,   ! device-id  &
                                           SINGLE,   ! left       &
                                           SINGLE,   ! right      &
                                           SINGLE,   ! bottom     &
                                           SINGLE)   ! top

             !+
             !   Substitute a call to ASK_REALIZED_DEVICE_VIEWPORT for
             !   the ASK DEVICE VIEWPORT statement, so that the program 
             !   will exhibit the same behavior on both VAX GKS V2.0 
             !   and VAX GKS V3.0 or later.
             !- 

             !   ASK DEVICE VIEWPORT Left_DC, Right_DC, Bottom_DC, Top_DC

                 CALL ASK_REALIZED_DEVICE_VIEWPORT (0%, Left_DC,   &
                   Right_DC, Bottom_DC, Top_DC)
                 .
                 .
                 .
             END PROGRAM

         Note that calling ASK_REALIZED_DEVICE_VIEWPORT  in  place  of
         the  ASK  DEVICE  VIEWPORT  statement  will  produce  correct
         results with VAX GKS V2.0 as well as VAX GKS V3.0 or later.


      o  The VAX BASIC graphics statement LOCATE CHOICE will no longer
         highlight   the   initial  choice  when  the  menu  is  first
         displayed.  The initial menu item will be highlighted as soon
         as  you  attempt to move the cursor, for example, by pressing
         either the UP or DOWN arrow key on a  VT240  terminal.   This
         problem will be fixed in VAX/VMS V4.6.










                                                               Page 11


      o  The VAXstation I device type  number  has  changed  from  the
         value  41  to  the  value  42.   This  change  more correctly
         reflects the  different  aspect  ratio  of  a  VAXstation  I.
         Although device type 41 will still work on a VAXstation I, it
         will produce incorrectly sized windows and output.


      o  The numbers of the VAXstation hardware fonts have changed  to
         avoid  conflict  with the VAX GKS software font numbers.  The
         changes to VAXstation hardware font numbers are shown in  the
         following table:
              ________________________________

              Old font number| New font number
              _______________|________________
                  -1         |     -201
                             |
                  -2         |     -202
                             |
                  -3         |     -203
              ________________________________

         In addition, old font number 1  is  also  available  as  font
         number -200.


ADDITIONAL INSTALLATION CONSIDERATIONS

If you choose the option of installing the VAX/VMS system  definitions
during  the  VAX  BASIC installation, VMSINSTAL first verifies whether
you have the file [SYSLIB]SDLNPARSE.EXE installed on your system.   If
SDLNPARSE.EXE  is  not  installed on your system, VMSINSTAL signals an
error.  You must  install  the  MicroVMS  program  development  option
before installing the system definitions.

DIGITAL recommends a WORKING SET quota of 400 to optimize  performance
for accounts primarily accessing VAX BASIC.

DOCUMENTATION ERRORS AND OMISSIONS

Only the VAX BASIC  Installation  Guide  has  been  updated  for  this
release.   The following sections describe omissions and errors in the
following manuals:

      o  Programming with VAX BASIC Graphics

      o  VAX BASIC User Manual

      o  VAX BASIC Reference Manual


1.  The following errors exist in Programming with VAX BASIC Graphics:

      o  In Chapter 2,  page  2-8,  the  program  comments  !Draw  the
         horizontal  lines  and  !Draw  the  vertical  lines should be








                                                               Page 12


         reversed.

      o  In Chapter 3, page  3-4,  the  program  comment  !Fill  spine
         should be changed to !Fill book's cover.

      o  In Chapter 4, page 4-3, the first program line in  the  first
         example should be changed to the following:

              SET TEXT FONT 1, 'CHAR'

      o  In Chapter 8, page 8-3, OPEN  "TV38"  in  the  first  example
         should be changed to OPEN "VT38".


      o  In Chapter 8, page 8-10, Section 8.2.2, the second  paragraph
         is incorrect.  It should read as follows:

         Images contained in metafiles are displayed with  the  window
         and  viewport  specified  when the metafile was created.  The
         GRAPH METAFILE  statement  ignores  the  current  window  and
         viewport settings in the program.


      o  In Chapter 8, page  8-17,  the  keyboard  in  figure  8-3  is
         backwards.


The following information was  erroneously  omitted  from  Programming
with VAX BASIC Graphics:


      o  Add the following paragraph to Chapter 8, Section 8.1.2,  and
         Chapter  9  in  the  description  of  the OPEN...FOR GRAPHICS
         statement at the end of Remark 1:

         When you use the  OPEN...FOR  GRAPHICS  statement,  you  must
         specify  a string expression which represents either a device
         name or a file specification.  If this string expression is a
         null  string, or if you do not specify an OPEN...FOR GRAPHICS
         statement, VAX BASIC tries  to  translate  the  logical  name
         GKS$CONID.

         The logical name GKS$CONID tells VAX BASIC  which  device  to
         select for default I/O if this information is not supplied in
         an OPEN...FOR GRAPHICS statement.  If there is no translation
         for  the  logical  name  GKS$CONID,  VAX BASIC uses the value
         "TT:".  You can use GKS$CONID to send your graphics output to
         a file or to a device other than your terminal.  For example:

           $ ASSIGN 15 GKS$WSTYPE           ! Type LCP01
           $ ASSIGN MY_OUTPUT.DAT GKS$CONID ! Send output to a file 
           $ RUN MY_PROGRAM                 ! Execute graphics program

         This example results in graphics output  being  sent  to  the
         file  MY_OUTPUT.DAT.   This  file  can later be printed on an








                                                               Page 13


         LCP01 printer.

           $ ASSIGN 12 GKS$WSTYPE           ! Type VT125
           $ ASSIGN VTA123: GKS$CONID       ! Send graphics output to
           $ RUN MY_PROGRAM                 ! another terminal

         In this example,  graphics  output  is  displayed  on  device
         VTA123.


      o  In Chapter 8,  page  8-1,  replace  the  first  paragraph  in
         Section 8.1 with the following:

         To use more than one device, you must include the  OPEN...FOR
         GRAPHICS   statement  in  your  program.   For  example,  the
         following statement opens  a  device  and  identifies  it  as
         device  2.

              OPEN "VTA247:" FOR GRAPHICS AS DEVICE #2

         The quoted string must be one of the following:

         o A system name

         o The logical name for an actual device

         o The file specification of a metafile

         o The file specification of a file that  was  opened  with  a
         specific device type, which you later wish to print to.

      o  In Chapter  9,  page  9-131,  and  in  Appendix  B,  add  the
         following devices to the list of supported device types:

                   Device type        Supported device
                       16             VT330
                       17             VT340
                       53             HP plotter 7550



The following errors exist in the VAX BASIC User Manual:


      o  In Chapter 15, page 46, the values in the last paragraph  are
         incorrect.  This paragraph should read as follows:

         A value of zero specifies the  default  number  of  retrieval
         pointers.   A  value of -1 specifies mapping the entire file,
         if possible.  Values -128 through -2 are reserved.


      o  In Chapter  16,  page  15,  the  third  sentence  in  section
         16.3.3.8 should be changed as follows:









                                                               Page 14


         This causes VAX BASIC  to  print  CR  (Credit  Record)  after
         negative  numbers,  and  DR  (Debit  Record)  after  positive
         numbers and zero.


      o  In Chapter 19, the first sentence in Section 19.5.1 should be
         changed as follows:

         In the prototype block, if the data type is not  aligned  bit
         string  or packed decimal string, the first word of the first
         longword contains a value denoting the  number  of  bytes  in
         each array element.

         The  length  of  an  aligned  bit  string  array  element  is
         specified  in  bits.   The  length of a packed decimal string
         array element is the number of 4-bit  digits  (not  including
         the sign).

      o  In Chapter 22, page 2, the first paragraph is misleading.  It
         states that "when you run a program in the BASIC environment,
         any libraries accessed can contain only VAX BASIC object code
         (object  code  from  SUB, FUNCTION and PICTURE subprograms)."
         This is not entirely true.  In addition,  you  can  access  a
         shareable  image from the environment that contains non-BASIC
         code (for example,  your  shareable  image  could  contain  a
         transfer  vector written in VAX MACRO.) This paragraph should
         state, however, that if you want to load  a  subprogram  into
         the  environment  with  the  LOAD  command, then it must be a
         BASIC subprogram.


      o  In Appendix A, the  description  of  the  compile-time  error
         ILLARGBP2  should  be  changed.   BASIC-PLUS-2 now accepts 32
         parameters rather than 8 parameters.

      o  In Appendix B, the explanation of the error ILLFIEVAR  should
         state that the error cannot be trapped with a VAX BASIC error
         handler unless the program contains OPTION HANDLE=SEVERE, not
         OPTION HANDLE = FATAL.



The following information was erroneously omitted from the  VAX  BASIC
User Manual:

      o  In Chapter 15, page 15-23, add the following  sentence:   "If
         you  are  updating  a  variable length record, and the record
         that you want to write out is not the same size as the record
         you retrieved, then you must use a COUNT clause."

      o  In Chapter 16, page 16-15, add the following sentence to  the
         end of section 16.3.3.8:  "Use of the Credit/Debit formatting
         character causes the value  to  be  printed  with  a  leading
         space."









                                                               Page 15


      o  The  error,  "AMPCONILL,  &  continuation  is  illegal  after
         %INCLUDE   directive"   should   be  added  to  the  list  of
         compile-time errors in Appendix A.

      o  In  Appendix  B,  page  B-30,  add  the  following   to   the
         description of the run-time error message SIZRECINV:

         o You specified a record size in the OPEN statement that  was
         not  equal  to  the  actual  record  size  when  the file was
         created.



The following errors exist in the VAX BASIC Reference Manual:


      o  In  Chapter  1,  page  13,  the  documentation  provides   an
         incorrect   cross-reference   to  Appendix  C  in  the  first
         paragraph.   The  documentation  should  instead  state   the
         following:  "Refer to Chapter 19 of the VAX BASIC User Manual
         for more information on the storage of packed decimal data."

      o  In Chapter 1, Table 1-9, the meaning of operator == should be
         changed as follows:

         A and B will PRINT the same.  Note that, in most cases, A and
         B  will  PRINT  the same if they are equal to six significant
         digits.  However, if one value prints  in  explicit  notation
         and the other value prints in E format notation, the relation
         will always be false.

      o  In Chapter 3, page 9, Remark 4 is incorrect.  It should state
         "...and signals the error "missing END IF directive"".


      o  In Chapter 4, page 56, the documentation on the DEF  function
         states  that  DEF  functions  cannot  be  recursive.  This is
         incorrect.  DEF functions can be recursive.

      o  In Chapter 4, page 61, the documentation on the DEF* function
         states  that  DEF*  functions  cannot  be recursive.  This is
         incorrect.  DEF* functions can be recursive.

      o  In Chapter 4, page 106, the first bullet under remark  number
         3  for  the FIND statement contains the text "The primary key
         is #,".  A zero should follow this number sign (#).

      o  In Chapter  4,  page  108,  the  documentation  on  the  FIND
         statement  states  that  a successful random access FIND sets
         the next record pointer to the record with the next value  in
         the  key sort order.  This is incorrect.  A successful random
         access FIND updates the current record pointer but leaves the
         next record pointer unchanged.










                                                               Page 16


      o  In Chapter 4, page 151, correct the description of the  INPUT
         LINE statement as follows:  "The INPUT LINE statement assigns
         a string value, and in some cases the line terminator, from a
         terminal  or  terminal-format  file  to  a  string."  See the
         following release note for more information.

      o  In Chapter 4, page 152, change Remark 5 to read as follows:

         5.  The INPUT LINE statement assigns all input characters  to
         string variables.  In addition, the INPUT LINE statement will
         place  the  following  line  terminator  characters  in   the
         assigned string if they are a part of the string value:
             Hex code    ASCII char      Character name
                0A          LF           Line Feed
                0B          VT           Vertical Tab
                0C          FF           Form Feed
                0D          CR           Carriage Return
                0D0A        CRLF         Carriage Return/Line Feed
                1B          ESC          Escape

         Any other line terminator, such as  CTRL/D  and  CTRL/F  when
         line  editing  is  turned  off,  will  not  be  placed in the
         assigned string.


      o  In Chapter 4,  page  173,  the  syntax  diagram  of  the  LOC
         function  is  missing the parameters "var" and "ext-routine".
         These parameters should be placed in the now-empty braces.

      o  In Chapter 4, page 191, remark number 5 in the description of
         the MAP DYNAMIC statement should read as follows:

         A static string variable must either be a  variable  declared
         in  a  MAP  or  COMMON statement or a parameter declared in a
         SUB, FUNCTION or PICTURE.  It cannot be a parameter  declared
         in a DEF or DEF* function.

      o  In Chapter 4, page  193,  the  documentation  on  the  MARGIN
         statement  states  that  the  default  margin  for a terminal
         format file is 72.  For channel 0,  however,  the  margin  is
         determined by the width of SYS$OUTPUT.

      o  In Chapter 4, page 261, the  fourth  bullet  (o)  under  note
         number 24 should be corrected to read as follows:

         o A value of zero specifies the default number  of  retrieval
         pointers.   A  value  of  -1 means to map the entire file, if
         possible.  Values from -128 through -2 are reserved.

      o  In Chapter 4, page 289, the definition of the  PUT  statement
         states  that  you  cannot  use PUT statements on files opened
         with ORGANIZATION UNDEFINED.  This  statement  is  incorrect.
         You   can   use  the  PUT  statement  on  files  opened  with
         ORGANIZATION UNDEFINED; however, this feature should be  used
         with caution.








                                                               Page 17


      o  In Chapter 4,  page  316,  the  documentation  on  the  REMAP
         statement  states, "When you specify a data type (on a FILL),
         all following FILL items are of  that  data  type  until  you
         specify  a  new  data type." This statement is incorrect.  If
         you specify a data type before a  FILL  keyword  in  a  REMAP
         statement, the FILL item is of that data type.  If you do not
         specify a data type, the FILL item is  of  the  default  data
         type.


The following information was erroneously omitted from the  VAX  BASIC
Reference Manual:


      o  In Chapter 4, page 100, the  following  should  be  added  to
         Syntax Rule 2 under the FIELD statement:

         However, a subsequent int-exp cannot be  dependent  upon  the
         return  string  from  a  previous  int-exp.  For example, the
         following statement is illegal  because  the  second  int-exp
         depends on the return string A$:
            FIELD #1%, 1% AS A$, ASCII(A$) AS B$


      o  In Chapter 4, page  128,  add  the  following  bullets  under
         remark number 1 in the description of the GET statement:

         o An RFA value is only valid  for  the  life  of  a  specific
         version  of  a  file.  If a new version of a file is created,
         the RFA values may change.

         o Attempting to access a record with  an  invalid  RFA  value
         will cause VAX BASIC to signal a run-time error.

      o  In Chapter 4, page 190, add the following to the last  bullet
         in syntax rule number 1 in the description of the MAP DYNAMIC
         statement:

         - Static-str-var cannot be a parameter declared in a  DEF  or
         DEF* function.

      o  In Chapter 4, page 255, add the following bullet under remark
         number 10 in the description of the OPEN statement:

         o Do not use the CONNECT clause  when  accessing  files  over
         DECnet  or VAX BASIC will signal the error "Cannot open file"
         (ERR=162).

      o  In Chapter 4, page 255, add the following bullet under remark
         number 14 in the description of the OPEN statement:

         o The size of the specified map cannot exceed 32767 bytes.

      o  In Chapter 4, page 287, add the following syntax rules to the
         description of the PROGRAM statement:








                                                               Page 18


         3.  The first character of a prog-name must be an  alphabetic
         character  (A  through  Z).   The  remaining  characters,  if
         present, can be any combination of letters, digits (0 through
         9), dollar signs ($), and periods (.), or underscores (_).

         4.  Prog-name cannot be a quoted name.

      o  In Chapter 4, page 316,  add  the  following  to  the  fourth
         bullet  in  syntax  rule  number  1 in the description of the
         REMAP statement:

         - Static-str-var cannot be a parameter declared in a  DEF  or
         DEF* function.

      o  In Chapter 4, page 333, add the following remark to the  list
         of remarks for the RND function:

         4.   The  RND  function  returns  values   over   a   uniform
         distribution between 0 and 1.  This means that there is equal
         probability that the value  will  be  between  0  and  .1  as
         between  .5  and  .6.   This  is  as  opposed to a bell-curve
         distribution where the probability of values in the range  .3
         to .7 would be much higher than the outer ranges.


      o  In Chapter 4, page 366, add the following to the  description
         of the TAB function:

         When used outside  the  PRINT  statement,  the  TAB  function
         creates a string containing the specified number of spaces.


      o  In Chapter 4, page 366, the syntax rules for the TAB function
         should read as follows:

         1.  When used with the PRINT statement, int-exp specifies the
         column number of the cursor or print mechanism.

         2.  When used outside the PRINT statement, int-exp  specifies
         the number of spaces in the returned string.


      o  In Chapter 4, page 380, replace the second sentence in Remark
         2 with the following:

         Because FIND locates but does not retrieve records, you  must
         specify a COUNT clause when updating a variable length record
         when the preceding operation was a FIND.

      o  In Chapter 4, page 380,  add  the  following  remark  between
         Remark 2 and Remark 3:

         If you are updating a variable length record, and the  record
         that you want to write out is not the same size as the record
         you retrieved, then you must use a COUNT clause.








                                                               Page 19


      o  In Appendix B,  Section  B.3.7,  add  the  following  to  the
         section on user-defined functions:

         DEF functions can be recursive.  However, VAX BASIC does  not
         detect  infinitely  recursive DEF functions.  If your program
         invokes an infinitely recursive DEF  function,  your  program
         will eventually terminate with a fatal error; typically, this
         error will be an access violation.

      o  In Appendix B, note  that  VAX  BASIC  accepts  two  asterisk
         characters (**) as an exponentiation operator.

REPORTING PROBLEMS

Complete and concise information will help DIGITAL give  accurate  and
timely  service to software problems.  Experience shows that many SPRs
do not contain sufficient information to  duplicate  or  identify  the
problem.  When you prepare to submit an SPR, please do the following:

      o  Describe as accurately as possible the state  of  the  system
         and  the circumstances when the problem occurred.  Include in
         the description the version number of VAX BASIC  being  used.
         (You can find the version number by typing BASIC and pressing
         RETURN.) Illustrate the problem with specific examples.

      o  Reduce the problem to as small a size as possible, preferably
         to a program unit of 30 source lines or fewer.

      o  Remember to include listings of any command  files,  relevant
         data files, CDDL record definitions, and so on.

      o  Provide a listing of the VAX BASIC program.

      o  Submit sources on machine-readable media (floppy diskette  or
         magnetic  tape)  if  possible.  All media will be returned to
         you when the SPR is answered.

      o  Report only one problem per  SPR.   This  will  facilitate  a
         faster response.

      o  Mail the SPR package to DIGITAL.


